Multi-Link Point to Point Protocol (MLPPP) is used to aggregate the bandwidth of several lower speed links to effectively provide a single higher speed link, along with low delay, low jitter and maintain the order of packets. IP packets of a traffic flow to be carried over the MLPPP (higher speed) link are distributed across the lower speed links at the transmitting end of the MLPPP link by fragmenting whole PPP frames and sending the fragments over different physical links also called MLPPP links. MLPPP is formally known as PPP Multilink Protocol, but is also known as ML PPP, PPP-MP, PPP-MLP, MPPP and as defined in IETF RFC1990 which specifies that fragments of a packet are to be distributed to the link transmit queues on the basis of the least occupied queue. That is, the occupancy (fill level in bytes) of each queue is determined and the current fragment of a packet to be transmitted is inserted into the queue with the lowest occupancy.
Generally, the aforementioned approach works well. However, in practice, many IP data switches use data memory with linked list pointers to implement data queues. In these scenarios, the data queues can be implemented in blocks of X bytes (e.g. 64 bytes) in which case the link transmit queue occupancy is often measured in terms of blocks. Link transmit queue occupancy of several queues could be equal in terms of blocks when in fact their actual occupancy measured in bytes can be different. Additionally, the block management process updates the queue occupancy in a finite amount of time, which introduces latency in available queue occupancy information. When packets are processed back-to-back, the packet fragments in a MLPPP bundle can be assigned to links faster than the true occupancy of each link can be determined, which can prevent the system from utilizing the appropriate link.
Therefore, in such cases, an improved means for determining which link should be selected for the current packet fragment for transmission is highly desirable.